// pages/login/login.js
const app = getApp()

Page({
  data: {
    hasUserInfo: false,
    userInfo: {},
    isLoading: false,
    isAgreed: false  // 隐私协议同意状态
  },

  onLoad() {
    // 检查是否已登录
    if (app.globalData.token) {
      wx.reLaunch({
        url: '/pages/index/index'
      })
      return
    }
  },

  // 隐私协议复选框变化处理
  onAgreementChange(e) {
    const isAgreed = e.detail.value.length > 0
    this.setData({ isAgreed })
  },

  // 查看用户服务协议
  viewUserAgreement() {
    wx.showModal({
      title: '用户服务协议',
      content: '这里是用户服务协议的内容，包括但不限于服务内容、用户权利与义务、免责声明等。\n\n1. 服务内容\n2. 用户权利与义务\n3. 隐私保护\n4. 免责声明\n5. 协议变更',
      showCancel: false,
      confirmText: '我知道了'
    })
  },

  // 查看隐私政策
  viewPrivacyPolicy() {
    wx.showModal({
      title: '隐私政策',
      content: '这里是隐私政策的内容，说明我们如何收集、使用、存储和保护您的个人信息。\n\n1. 信息收集\n2. 信息使用\n3. 信息存储\n4. 信息共享\n5. 用户权利',
      showCancel: false,
      confirmText: '我知道了'
    })
  },

  // 微信授权登录
  async wechatLogin() {
    if (this.data.isLoading) return
    
    // 验证是否同意协议
    if (!this.data.isAgreed) {
      wx.showToast({
        title: '请先同意服务协议和隐私政策',
        icon: 'none',
        duration: 2000
      })
      return
    }
    
    this.setData({ isLoading: true })
    app.utils.showLoading('登录中...')

    try {
      // 1. 获取微信登录凭证
      const code = await app.utils.wechatLogin()
      
      // 2. 调用后端登录接口
      const loginResult = await app.utils.request({
        url: '/auth/wechat/login',
        method: 'POST',
        data: { code }
      })

      // 3. 保存登录信息和sessionKey
      app.utils.saveUserInfo(loginResult.data.student, loginResult.data.token)
      // 保存sessionKey用于后续解密用户信息
      wx.setStorageSync('sessionKey', loginResult.data.sessionKey)
      
      // 4. 提示用户是否获取头像和昵称
      this.setData({ isLoading: false })
      app.utils.hideLoading()
      
      wx.showModal({
        title: '获取用户信息',
        content: '为了更好的服务体验，是否获取您的微信头像和昵称？',
        success: (res) => {
          if (res.confirm) {
            this.getUserProfile()
          } else {
            this.loginSuccess()
          }
        }
      })
    } catch (error) {
      console.error('登录失败:', error)
      this.setData({ isLoading: false })
      app.utils.hideLoading()
      app.utils.showError(error.message || '登录失败，请重试')
    }
  },

  // 获取用户信息
  getUserProfile() {
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: async (res) => {
        try {
          app.utils.showLoading('更新用户信息...')
          
          console.log('获取到用户信息:', res.userInfo)
          console.log('获取到加密数据:', res.encryptedData)
          console.log('获取到初始向量:', res.iv)
          console.log('用户昵称:', res.userInfo.nickName)
          console.log('用户头像:', res.userInfo.avatarUrl)
          
          // 获取保存的sessionKey
          const sessionKey = wx.getStorageSync('sessionKey')
          if (!sessionKey) {
            throw new Error('sessionKey不存在，请重新登录')
          }

          // 调用后端接口更新用户信息
          const updateResult = await app.utils.request({
            url: '/auth/user/update',
            method: 'POST',
            data: {
              encryptedData: res.encryptedData,
              sessionKey: sessionKey,
              iv: res.iv
            }
          })

          if (updateResult.code === 200) {
            console.log('后端返回的用户信息:', updateResult.data)
            console.log('后端返回的昵称:', updateResult.data.nickname)
            console.log('后端返回的头像:', updateResult.data.avatarUrl)
            
            // 使用后端返回的更新后的用户信息
            app.utils.saveUserInfo(updateResult.data, app.globalData.token)
            
            app.utils.hideLoading()
            app.utils.showSuccess('用户信息更新成功')
            this.loginSuccess()
          } else {
            throw new Error(updateResult.message || '更新用户信息失败')
          }
        } catch (error) {
          console.error('更新用户信息失败:', error)
          app.utils.hideLoading()
          app.utils.showError('更新用户信息失败: ' + error.message)
        }
      },
      fail: (error) => {
        console.error('用户拒绝授权:', error)
        app.utils.showError('需要授权才能获取用户信息')
      }
    })
  },

  // 登录成功
  loginSuccess() {
    this.setData({ isLoading: false })
    app.utils.hideLoading()
    
    // 检查是否需要选择学校
    const userInfo = app.globalData.userInfo
    if (!userInfo || !userInfo.schoolId) {
      app.utils.showSuccess('登录成功')
      setTimeout(() => {
        wx.reLaunch({
          url: '/pages/school-select/school-select'
        })
      }, 1000)
      return
    }
    
    app.utils.showSuccess('登录成功')
    setTimeout(() => {
      wx.reLaunch({
        url: '/pages/index/index'
      })
    }, 1500)
  },

  // 游客登录
  quickLogin() {
    if (this.data.isLoading) return
    
    // 验证是否同意协议
    if (!this.data.isAgreed) {
      wx.showToast({
        title: '请先同意服务协议和隐私政策',
        icon: 'none',
        duration: 2000
      })
      return
    }
    
    wx.showModal({
      title: '游客模式',
      content: '游客模式功能有限，建议使用微信登录获得完整体验',
      success: (res) => {
        if (res.confirm) {
          // 创建临时用户信息
          const guestInfo = {
            id: 'guest_' + Date.now(),
            nickname: '游客用户',
            avatarUrl: '/images/avatar-default.png',
            schoolId: null,
            verifyStatus: 0
          }
          
          const guestToken = 'guest_token_' + Date.now()
          app.utils.saveUserInfo(guestInfo, guestToken)
          
          wx.reLaunch({
            url: '/pages/index/index'
          })
        }
      }
    })
  }
})